/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.openide.src.nodes; import java.awt.BorderLayout; import java.beans.Customizer; import java.beans.PropertyEditor; import java.util.ResourceBundle; import javax.swing.*; import javax.swing.border.*; import org.openide.src.*; import org.openide.explorer.propertysheet.*; import org.openide.explorer.propertysheet.editors.ModifierEditor; import org.openide.*; import org.openide.util.Utilities; import org.openide.util.NbBundle; import org.openide.util.HelpCtx; /** Customizer for ClassElement * * @author Petr Hamernik */ public class ClassCustomizer extends JPanel { /** Source of the localized human presentable strings. */ static ResourceBundle bundle = NbBundle.getBundle(ClassCustomizer.class); /** Predefined types in the type combo */ private static final String[] COMMON_TYPES = { "java.lang.Object", // NOI18N "java.lang.Component", // NOI18N "javax.swing.JComponent", // NOI18N "javax.swing.JPanel" // NOI18N }; /** The edited class */ ClassElement element; /** Create new ClassCustomizer component * @param element The class to be customized */ public ClassCustomizer(ClassElement element) { this.element = element; initComponents (); //borders classPanel.setBorder (new CompoundBorder( new TitledBorder(bundle.getString("CTL_ClassFrame")), new EmptyBorder(new java.awt.Insets(5, 5, 5, 5))) ); typePanel.setBorder (new TitledBorder(bundle.getString("CTL_ClassType"))); modifierPanel.setBorder (new TitledBorder(bundle.getString("CTL_Modifiers"))); interfacesPanel.setBorder (new TitledBorder(bundle.getString("CTL_Interfaces"))); // modifiers PropertyPanel modifEditor = new PropertyPanel ( element, ElementProperties.PROP_MODIFIERS, PropertyPanel.PREF_CUSTOM_EDITOR ); modifierPanel.add(modifEditor, BorderLayout.CENTER); PropertyEditor propEdit = modifEditor.getPropertyEditor(); if (propEdit instanceof ModifierEditor) { ((ModifierEditor)propEdit).setMask(element.getModifiersMask()); } // class or interface, superclass ButtonGroup group = new ButtonGroup(); group.add(classRadioButton); group.add(interfaceRadioButton); Identifier superclassId = element.getSuperclass(); superClassCombo.setSelectedItem((superclassId == null) ? "" : superclassId.getFullName()); // NOI18N if (element.isClass()) { classRadioButton.setSelected(true); } else { interfaceRadioButton.setSelected(true); superClassCombo.setEnabled(false); } classRadioButton.setEnabled(false); interfaceRadioButton.setEnabled(false); // name nameTextField.setText(element.getName().getName()); // interfaces interfacesPanel.add ( new PropertyPanel ( element, ElementProperties.PROP_INTERFACES, PropertyPanel.PREF_CUSTOM_EDITOR ), BorderLayout.CENTER ); HelpCtx.setHelpIDString (this, ClassCustomizer.class.getName ()); } /** This method is called from within the class to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the FormEditor. */ private void initComponents () {//GEN-BEGIN:initComponents classPanel = new javax.swing.JPanel (); jLabel1 = new javax.swing.JLabel (); nameTextField = new javax.swing.JTextField (); jLabel2 = new javax.swing.JLabel (); superClassCombo = new javax.swing.JComboBox(COMMON_TYPES); typePanel = new javax.swing.JPanel (); classRadioButton = new javax.swing.JRadioButton (); interfaceRadioButton = new javax.swing.JRadioButton (); jPanel3 = new javax.swing.JPanel (); modifierPanel = new javax.swing.JPanel (); interfacesPanel = new javax.swing.JPanel (); setLayout (new java.awt.GridBagLayout ()); java.awt.GridBagConstraints gridBagConstraints1; setBorder (new javax.swing.border.EmptyBorder(new java.awt.Insets(6, 6, 6, 6))); classPanel.setLayout (new java.awt.GridBagLayout ()); java.awt.GridBagConstraints gridBagConstraints2; jLabel1.setText (bundle.getString("CTL_Name")); gridBagConstraints2 = new java.awt.GridBagConstraints (); gridBagConstraints2.insets = new java.awt.Insets (12, 0, 0, 8); gridBagConstraints2.anchor = java.awt.GridBagConstraints.EAST; classPanel.add (jLabel1, gridBagConstraints2); nameTextField.addFocusListener (new java.awt.event.FocusAdapter () { public void focusLost (java.awt.event.FocusEvent evt) { nameTextFieldFocusLost (evt); } } ); gridBagConstraints2 = new java.awt.GridBagConstraints (); gridBagConstraints2.gridwidth = 0; gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints2.insets = new java.awt.Insets (12, 0, 0, 0); gridBagConstraints2.weightx = 1.0; classPanel.add (nameTextField, gridBagConstraints2); jLabel2.setText (bundle.getString("CTL_Superclass")); gridBagConstraints2 = new java.awt.GridBagConstraints (); gridBagConstraints2.insets = new java.awt.Insets (8, 0, 0, 8); gridBagConstraints2.anchor = java.awt.GridBagConstraints.EAST; classPanel.add (jLabel2, gridBagConstraints2); superClassCombo.setEditable (true); superClassCombo.addActionListener (new java.awt.event.ActionListener () { public void actionPerformed (java.awt.event.ActionEvent evt) { superClassComboActionPerformed (evt); } } ); gridBagConstraints2 = new java.awt.GridBagConstraints (); gridBagConstraints2.gridwidth = 0; gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints2.insets = new java.awt.Insets (8, 0, 0, 0); gridBagConstraints2.weightx = 1.0; classPanel.add (superClassCombo, gridBagConstraints2); typePanel.setLayout (new java.awt.GridBagLayout ()); java.awt.GridBagConstraints gridBagConstraints3; classRadioButton.setText (bundle.getString("CTL_Class")); classRadioButton.addActionListener (new java.awt.event.ActionListener () { public void actionPerformed (java.awt.event.ActionEvent evt) { switchClassAndInterface (evt); } } ); gridBagConstraints3 = new java.awt.GridBagConstraints (); gridBagConstraints3.insets = new java.awt.Insets (4, 8, 4, 4); typePanel.add (classRadioButton, gridBagConstraints3); interfaceRadioButton.setText (bundle.getString("CTL_Interface")); interfaceRadioButton.addActionListener (new java.awt.event.ActionListener () { public void actionPerformed (java.awt.event.ActionEvent evt) { switchClassAndInterface (evt); } } ); gridBagConstraints3 = new java.awt.GridBagConstraints (); gridBagConstraints3.insets = new java.awt.Insets (4, 4, 4, 8); typePanel.add (interfaceRadioButton, gridBagConstraints3); gridBagConstraints2 = new java.awt.GridBagConstraints (); gridBagConstraints2.gridx = 1; gridBagConstraints2.gridy = 2; gridBagConstraints2.gridwidth = 0; gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints2.insets = new java.awt.Insets (8, 0, 0, 0); gridBagConstraints2.weighty = 1.0; classPanel.add (typePanel, gridBagConstraints2); gridBagConstraints2 = new java.awt.GridBagConstraints (); gridBagConstraints2.gridwidth = 2; gridBagConstraints2.fill = java.awt.GridBagConstraints.VERTICAL; classPanel.add (jPanel3, gridBagConstraints2); gridBagConstraints1 = new java.awt.GridBagConstraints (); gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints1.weightx = 1.0; add (classPanel, gridBagConstraints1); gridBagConstraints1 = new java.awt.GridBagConstraints (); gridBagConstraints1.gridwidth = 0; gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints1.insets = new java.awt.Insets (0, 5, 0, 0); add (modifierPanel, gridBagConstraints1); interfacesPanel.setLayout (new java.awt.BorderLayout ()); gridBagConstraints1 = new java.awt.GridBagConstraints (); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 2; gridBagConstraints1.gridwidth = 0; gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints1.insets = new java.awt.Insets (5, 0, 0, 0); gridBagConstraints1.weightx = 1.0; gridBagConstraints1.weighty = 1.0; add (interfacesPanel, gridBagConstraints1); }//GEN-END:initComponents private void superClassComboActionPerformed (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_superClassComboActionPerformed Identifier oldValue = element.getSuperclass(); String oldValueStr = (oldValue == null) ? "" : oldValue.getFullName(); // NOI18N String newValueStr = superClassCombo.getSelectedItem().toString(); boolean ok = false; try { if (!oldValueStr.equals(newValueStr)) { try { element.setSuperclass(newValueStr.equals("") ? // NOI18N null : Identifier.create(newValueStr) ); ok = true; } catch (SourceException e) { TopManager.getDefault().notifyException(e); } } } catch (IllegalArgumentException e) { TopManager.getDefault().notify( new NotifyDescriptor.Message( bundle.getString("MSG_Not_Valid_Type"), NotifyDescriptor.ERROR_MESSAGE ) ); } if (!ok) superClassCombo.setSelectedItem(oldValueStr); }//GEN-LAST:event_superClassComboActionPerformed private void switchClassAndInterface (java.awt.event.ActionEvent evt) {//GEN-FIRST:event_switchClassAndInterface }//GEN-LAST:event_switchClassAndInterface private void updateSuperClassEnable() { superClassCombo.setEnabled(classRadioButton.isSelected()); } private void nameTextFieldFocusLost (java.awt.event.FocusEvent evt) {//GEN-FIRST:event_nameTextFieldFocusLost if (evt.isTemporary()) return; String newName = nameTextField.getText(); String oldName = element.getName().getName(); boolean ok = false; if (Utilities.isJavaIdentifier(newName)) { if (!oldName.equals(newName)) { Identifier id = Identifier.create(newName); try { element.setName(id); ok = true; } catch (SourceException e) { TopManager.getDefault().notifyException(e); } } } else { TopManager.getDefault().notify( new NotifyDescriptor.Message( bundle.getString("MSG_Not_Valid_Identifier"), NotifyDescriptor.ERROR_MESSAGE ) ); } if (!ok) nameTextField.setText(oldName); }//GEN-LAST:event_nameTextFieldFocusLost // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel classPanel; private javax.swing.JLabel jLabel1; private javax.swing.JTextField nameTextField; private javax.swing.JLabel jLabel2; private javax.swing.JComboBox superClassCombo; private javax.swing.JPanel typePanel; private javax.swing.JRadioButton classRadioButton; private javax.swing.JRadioButton interfaceRadioButton; private javax.swing.JPanel jPanel3; private javax.swing.JPanel modifierPanel; private javax.swing.JPanel interfacesPanel; // End of variables declaration//GEN-END:variables } /* * Log * 4 Gandalf 1.3 1/12/00 Petr Hamernik i18n using perl script * (//NOI18N comments added) * 3 Gandalf 1.2 1/11/00 Jesse Glick Context help. * 2 Gandalf 1.1 12/9/99 Jan Jancura PropertyPanel changes * reflected. * 1 Gandalf 1.0 11/29/99 Petr Hamernik * $ */